﻿#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>

//int main()
//{
//	int i = 0;
//	for (i = 0; i < 10; i++)
//	{
//		if (i = 5)
//			printf("%d ", i);
//	}
//	return 0;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	int c = 0;
//	int t = 0;
//	scanf("%d %d %d", &a, &b, &c);
//	
//	if (a < b)
//	{
//	    t = a;
//		a = b;
//		b = t;
//	}
//	if (a < c)
//	{
//		t = a;
//		a = c;
//		c = t;
//	}
//	if (b < c)
//	{
//		t = b;
//		b = c;
//		c = t;
//	}
//
//	printf("%d %d %d\n", a, b, c);
//	return 0;
//}
//int main()
//{
//	int i = 0;
//	for (i = 100; i <= 200; i++)
//	{
//
//	}
//	return 0;
//}
// ======试除法=======
//#include<math.h>
//int main()
//{
//	int n = 0;
//	int i = 0;
//	int count = 0;
//	for (i = 101; i <= 200; i+=2)
//	{
//		int flag = 1;//打印不出的原因是flag没有在循环内置1，只在主函数里置1了一次
//		for (n = 2; n <= sqrt(i); n++)
//		{
//			if (i % n == 0)
//			{
//				flag = 0;
//				break;
//			}
//		}
//		if (1 == flag) 
//		{ 
//			printf("%d ", i);
//			count++;
//		}
//	}
//	printf("\ncount = %d\n", count);
//	return 0;
//}
//
//《素数求解的N种境界》
//
//
//int main()
//{
//	int count = 0;
//	int year = 0;
//	for (year = 1000; year <= 2000; year += 2)
//	{
//		//判断是否为闰年
//		if (year % 4 == 0 && year % 100 != 0 || year % 400 == 0)
//		{
//			printf("%d ", year);
//			count++;
//		}
//	}
//	printf("\n%d\n", count);
//	return 0;
//}//多看牛逼的人的代码

//int main()
//{
//	int m = 0;
//	int n = 0;
//	scanf("%d %d", &m, &n);
//	int min = (m < n ? m : n);
//	while (1)
//	{
//		if (m % min == 0 && n % min == 0)
//		{
//			printf("%d\n", m);
//			break;
//		}
//		min--;
//	}
//	return 0;
//}

//===辗转相除法===
//int main()
//{
//	//18 12
//	int m = 0;
//	int n = 0;
//	int r = 0;
//	scanf("%d %d", &m, &n);//模上一次后，即使是小的数字也会转换过来
//	while (r=m % n)
//	{
//		m = n;
//		n = r; 
//	}
//	printf("%d\n", n);
//
//	return 0;
//}
//====打印99乘法表===
//1*1=1
//2*1=2 2*2=4
//3*1=3 3*2=6 3*3=9
//...
//
//int main()
//{
//	int i = 0;
//	for (i = 0; i <= 9; i++)
//	{
//		int j = 0;
//		for (j = 1; j <= i; j++)//第几行就有几个式子，然后就j<=i，这个逻辑
//		{
//			printf("%d*%d=%-2d ", i, j, i * j);//%2d打印一个整数打印两位，没有就空着
//		}
//		printf("\n");
//	}
//	return 0;
//}

//====十个整数中找出最大值====
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };//如果是负数，寄
//	//int max = 0;//所以我们不应该先认定一个另外的最大值
//
//	int max = arr[0];
//
//	int i = 0;//应该认定一个这个数组里面的任意元素为最大值
//	for (i = 0; i <= 10; i++)
//	{
//		if (arr[i] > max)
//		{
//			max = arr[i];
//		}
//	}
//	printf("%d\n", max);
//	return 0;
//}
//计算1/1-1/2+1/3-1/4+1/5 …… + 1/99 - 1/100 的值，打印出结果

//int main()
//{
//	int j = 0;
//	float sum = 0;
//	for (j = 1; j < 101; j++)
//	{
//		if (j % 2 == 1)
//		{	
//			sum += 1.0 / j;
//		}
//		else
//		{
//			sum -= 1.0 / j;
//		}
//	}		
//	printf("%lf\n", sum);
//	return 0;
//}

//======编写程序数一下 1到 100 的所有整数中出现多少个数字9=====

//int main()
//{
//	int i = 0;
//	//进入循环，100次
//	int count = 0;
//	for (i = 1; i < 101; i++)
//	{
//		//计数9
//		if (i%10 == 9 && i/10 != 9)
//		{
//			count++;
//		}
//		else if (i/10 == 9 && i%10 != 9)
//		{
//			count ++;
//		}
//		else if (i / 10 == 9 && i % 10 == 9)
//		{
//			count += 2;
//		}
//	}
//	printf("%d\n", count);
//	return 0;
//}




//==========函数=========== 
//数学里面的函数f(x) = 2*x + 1;

//C语言的编译器提供了一些库函数
//printf
//scanf
//
//C语言一开始就是语法
//C语言标准就做了一些工作
//scanf - 功能，参数，返回类型，怎么实现不管，实现交给编译器厂商实现
//...
//
//VS - 微软
//gcc - gcc官方
//clang - 苹果实现
//


//1.开发效率低
// 2.标准问题
//3.容易出bug
//

//简单的总结，C语言常用的库函数都有：
//IO函数   //输入输出函数
//字符串操作函数
//字符操作函数
//内存操作函数
//时间 / 日期函数
//数学函数
//其他库函数


#include<string.h>
//int main()
//{
//	char arr1[20] = "xxxxxxxxxxxxxxx";
//	char arr2[] = "hello bit";
//	strcpy(arr1, arr2);//如果出现strcpy未定义，即为头文件未包含
//	printf("%s\n", arr1);
//	//照着文档如何学习
//	return 0;
//}

//int main()
//{
//	char arr[] = "hello bit";
//	memset(arr, 'x', 5);
//	printf("%s\n", arr);
//	return 0;
//}

//====自定义函数====

//ret_type fun_name(para1, *)
//{
//	statement;//语句项
//}
//ret_type 返回类型
//fun_name 函数名
//para1    函数参数


//int get_max(int x,int y)//独立的，功能单一
//{
//	if (x > y)
//	{
//		return x;
//	}
//	else
//	{
//		return y;
//	}
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	int c = get_max(a, b);//函数就像工厂
//	printf("%d\n", c);
//
//	return 0;
//}

//void Swap(int x, int y)
//{
//	int z = 0;
//	z = x;
//	x = y;
//	y = z;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//	printf("交换前:a=%d b=%d\n", a, b);
//	Swap(a, b);
//	printf("交换后:a=%d b=%d\n", a, b);//出问题了，没达到交换的效果
//	return 0;
//}

//
//当函数调用时，实参传给形参，形参将是实参的一份临时拷贝
//所以对形参的修改是不影响实参的
//

//void Swap(int* px, int* py)
//{
//	int z = 0;
//	z = *px;
//	*px = *py;
//	*py = z;
//}
//int main()
//{
//	int a = 0;
//	int b = 0;
//	scanf("%d %d", &a, &b);
//
//	printf("交换前:a=%d b=%d\n", a, b);
//	//传值调用
//	//Swap(a,b)
//	//传地址，传址调用
//	Swap(&a, &b);//把a和b的地址交给函数
//	printf("交换后:a=%d b=%d\n", a, b);
//
//	return 0;
//}

//=====猜数字游戏=====
//#include<stdlib.h>
//void menu()
//{
//	printf("*********************************\n");
//	printf("**********  1. play  ************\n");
//	printf("**********  0. exit  ************\n");
//    printf("*********************************\n");
//}
//
//void game()
//{
//	int guess = 0;
//	int ret = rand()%100+1;
//	//猜数字
//	while (1)
//	{
//		printf("请猜数字:>");
//		scanf("%d", &guess);
//		if (guess > ret)
//		{
//			printf("猜大了\n");
//		}
//		else if (guess < ret)
//		{
//			printf("猜小了\n");
//		}
//		else
//		{
//			printf("恭喜你，猜对了\n");
//			break;
//		}
//	}
//}
//
//int main()
//{
//	
//	int input = 0;
//	srand((unsigned int)time(NULL));
//	do
//	{
//		menu();
//		printf("请选择:>");
//		scanf("%d", &input);
//		switch (input)
//		{
//		case 1:
//			game();
//			break;
//		case 0:
//			printf("退出游戏\n");
//			break;
//		default:
//			printf("输入错误，请重新输入\n");
//		}
//
//	} while (input);
//	return 0;
//}
//int main()
//{
//	int arr[] = { 1,2,3,4,5,6,7,8,9,10 };
//	int sz = sizeof(arr) / sizeof(arr[0]);
//	int left = 0;
//	int right = sz-1;
//	int key = 0;
//	scanf("%d", &key);
//	while (left <= right)
//	{
//		int mid = left + (right - left)/2;
//		if (arr[mid] < key)
//		{
//			left = mid + 1;
//		}
//		else if (arr[mid] > key)
//		{
//			right = mid - 1;
//		}
//		else
//		{
//			printf("找到了，下标是%d\n", mid);
//			break;
//		}
//	}
//	printf("找不到。");
//	return 0;
//}



